package cn.z2huo.demo.kafka.apache.producer;

import cn.z2huo.demo.kafka.apache.constant.KafkaConfigConstant;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;

/**
 * <p>
 *
 * @author z2huo
 */
public class ProducerProperties {

    public static Properties getProducerProperties() {
        Properties properties = new Properties();
        properties.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, KafkaConfigConstant.BOOTSTARP_SERVERS);
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        // 指示生产者等待多达该毫秒数再发送请求，希望有更多记录到达以填充同一个批次
        properties.put(ProducerConfig.LINGER_MS_CONFIG, "100");
        // 当多个记录被发送到同一个分区时，生产者会尝试将这些记录批量打包到更少的请求中，此配置用来指示生产者一个批次可以使用的内存大小
        properties.put(ProducerConfig.BATCH_SIZE_CONFIG, "16384");
        // 生产者在认为一个请求完成之前需要等待领导者接收到的确认数量。
        properties.put(ProducerConfig.ACKS_CONFIG, "all");
        return properties;
    }

}
